/**
* @project admin-go-api
* @name sysDept
* @descriptions 部门服务层
* @author 寒锋
* @date 2023-12-18 16:03:51
 */

package service

import (
	"admin-go-api/api/dao"
	"admin-go-api/api/entity"
	"admin-go-api/common/response"
	"admin-go-api/constants"
	"github.com/gin-gonic/gin"
)

type ISysDeptService interface {
	GetSysDeptList(c *gin.Context, DeptName string, DeptStatus uint)
	QuerySysDeptVoList(c *gin.Context)
	CreateSysDept(c *gin.Context, sysDept entity.SysDept)
	GetSysDeptById(c *gin.Context, Id uint)
	UpdateSysDept(c *gin.Context, SysDept entity.SysDept)
	DeleteSysDeptById(c *gin.Context, dto entity.SysDeptIdDto)
}
type SysDeptServiceImpl struct{}

// GetSysDeptList 部门列表
func (s SysDeptServiceImpl) GetSysDeptList(c *gin.Context, DeptName string, DeptStatus uint) {
	list := dao.GetSysDeptList(DeptName, DeptStatus)
	response.Success(c, list)
}

// QuerySysDeptVoList 部门下拉列表
func (s SysDeptServiceImpl) QuerySysDeptVoList(c *gin.Context) {
	list := dao.QuerySysDeptVoList()
	response.Success(c, list)
}

// CreateSysDept 添加部门
func (s SysDeptServiceImpl) CreateSysDept(c *gin.Context, sysDept entity.SysDept) {
	result := dao.CreateSysDept(sysDept)
	if result {
		response.Success(c, nil)
		return
	}
	response.Failed(c, int(constants.ApiCode.DeptIsExist), constants.ApiCode.GetMessage(constants.ApiCode.DeptIsExist))
}

// GetSysDeptById 详情
func (s SysDeptServiceImpl) GetSysDeptById(c *gin.Context, Id uint) {
	row := dao.GetSysDeptById(Id)
	response.Success(c, row)
}

// UpdateSysDept 更新部门
func (s SysDeptServiceImpl) UpdateSysDept(c *gin.Context, SysDept entity.SysDept) {
	result := dao.UpdateSysDept(SysDept)
	if result {
		response.Success(c, nil)
		return
	}
	response.Failed(c, int(constants.ApiCode.FAILED), "更新失败")
}

// DeleteSysDeptById 删除部门
func (s SysDeptServiceImpl) DeleteSysDeptById(c *gin.Context, dto entity.SysDeptIdDto) {
	err := dao.DeleteSysDept(dto)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.DeptIsDistribute), "删除失败")
		return
	}
	response.Success(c, nil)
}

var sysDeptService = SysDeptServiceImpl{}

func SysDeptService() ISysDeptService {
	return &sysDeptService
}
